<?php
namespace app\admin\controller;

use think\facade\View;

use app\admin\model\SysMenu as SysMenuModel;

class SysMenu extends Base
{
    public function index()
    {
        $data = SysMenuModel::select();

        $data = obj_tree($data);

        return View::fetch('index',[
            'data' => $data,
            'type' => ['目录', '菜单', '按钮']
        ]);
    }

    public function info($id = 0)
    {
        if ($id != 0) {
            $data = SysMenuModel::find($id);
        } else {
            $data = [
                'id' => 0,
                'pid' => 0,
                'name' => '',
                'url' => '',
                'type' => 0,
                'icon' =>''
            ];
        }
        
        $data_permission = obj_tree(SysMenuModel::field('id, pid, name')->where('type', '<>', 2)->select());
        
        return View::fetch('save', [
            'data' => $data,
            'data_permission'=>$data_permission
        ]);
    }

    public function save()
    {
        if ($this->app->request->isPost()) {
            $param = $this->app->request->param();

            if ($param['name'] == '') {
                $this->error("目录名不能为空");
            }

            try {
                if ($param['id'] != 0) {
                    SysMenuModel::update([
                        'pid' => $param['pid'],
                        'name' => $param['name'],
                        'url' => $param['url'],
                        'type' => $param['type'],
                        'icon' => $param['icon']
                    ], ['id'=>$param['id']]);
                } else {
                    SysMenuModel::create([
                        'pid' => $param['pid'],
                        'name' => $param['name'],
                        'url' => $param['url'],
                        'type' => $param['type'],
                        'icon' => $param['icon']
                    ]);
                }
            } catch (\Exception $e) {
                $msg = $e->getMessage();

                $this->error("错误提示:".$msg);
            }
            $this->success('操作成功', 'sys_menu/index');
        }
    }

    public function delete($id = null)
    {
        if ($this->app->request->isAjax()) {
            if (SysMenuModel::where('pid', $id)->value('id')) {
                return ['code'=>0, 'msg'=>'此权限子权限不为空, 若要删除请先清空子权限'];
            }

            if (SysMenuModel::destroy($id)) {
                return ['code' => 1,'msg'=>"删除成功"];
            } else {
                return ['code' => 0,'msg'=>"删除失败"];
            }
        }
    }
}
